package model.parser.objetos;

import java.io.File;
import java.util.List;
import java.util.Random;

import model.ladron.ObjetoRobado;
import model.ladron.ObjetoRobado.Valorizacion;
import model.parser.Parser;
import model.parser.ParserCiudades;
import model.lugares.Ciudad;

import org.jdom2.Document;
import org.jdom2.Element;


public abstract class ParserObjetos extends Parser implements IParseadorObjetos{

		private Document documento;
		private Element nodoRaiz;
		private List<Element> listaObjetos;
		protected Valorizacion valorizacion;
		private ParserCiudades parserC;
		
		public ParserObjetos (File archivo, Valorizacion val1) {
			valorizacion = val1;
			parserC = new ParserCiudades();
			documento = super.crearDoc(documento, archivo,"");
			nodoRaiz = documento.getRootElement();
			/* Obtenemos el nodo principal	 */
			
			listaObjetos = nodoRaiz.getChildren("objeto");
		/* Creamos una lista con los nodos secundario	 */
	}
		
		private ObjetoRobado obtenerObjetoNumero(int i){
			Element nodo = (Element) listaObjetos.get(i);
			String nombre = nodo.getAttribute("nombre").getValue();
			String descripcion = nodo.getChild("descripcion").getValue();
			String sCiudad = nodo.getChild("ciudad").getValue();
			Ciudad ciudad = parserC.getCiudadPorNombre(sCiudad);
			return devolverObjeto(nombre,ciudad,descripcion);//ObjetoRobado objetoDevolver = new ObjetoRobado(nombre,ciudad,valorizacion,descripcion);
		}

		protected abstract ObjetoRobado devolverObjeto(String nombre, Ciudad ciudad, String descripcion);
		//ObjetoRobado objetoDevolver = new ObjetoRobado(nombre,ciudad,valorizacion,descripcion);
		
		public ObjetoRobado obtenerObjetoRandom(){
			Random r = new Random();
			int valorRandom = r.nextInt(listaObjetos.size());
			return( this.obtenerObjetoNumero(valorRandom));
		}		
		
}
